C++中的new用法总结

您所在的位置:网站首页 new int函数 C++中的new用法总结

C++中的new用法总结

2024-01-23 19:33| 来源: 网络整理| 查看: 265

前段时间复习面试的时候,看到这个问题经常有问到,我这个小白就看了些博客和书,总结一下。

new可以说是个一个关键字,也可以说是一个运算符,并且可以被重载。

1、new operator

这个就是平时最经常用的new,用法如下程序所示:

1 class A 2 { 3 public: 4 A(int i) :a(i){} 5 private: 6 int a; 7 }; 8 9 int main() 10 { 11 A* example = new A(1); 12 }

new operator实际上执行了以下三个步骤:

1、调用operator new分配内存(后面要说的第二种new),如果类本身定义了operator new,那么会调用类自己的operator new,而不是全局的;

2、调用A的构造函数A::A(int);

3、返回相应的指针

2、operator new

operator new不调用构造函数,而仅仅分配内存,有两个版本,前者抛出异常,后者当失败时不抛出异常,而是直接返回:

void* operator new (std::size_t size); void* operator new (std::size_t size, const std::nothrow_t& nothrow_value) noexcept;

可以看到,operator new的作用有点类似与C语言中的malloc,有的地方说operator new的底层实现可以是malloc。

C++中可以用set_new_handler()设置抛出bad_alloc()异常时调用的处理函数,有几个条款很详细描述了具体做法。

我还是太菜了,水平不够,不太能理解自定义异常处理函数的内容...T T

1 class A 2 { 3 public: 4 A(int i) :a(i){} 5 void* operator new(size_t size) 6 { 7 cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3